class Solution {
public:
    int findNumberOfLIS(vector<int>& nums) {
        int n = nums.size();
        vector<int> len(n, 1);
        vector<int> count(n, 1);

        int retlen = 1, retcount = 1;
        for (int i = 1; i < n; ++i)
        {
            for (int j = i - 1; j >= 0; --j)
            {
                if (nums[i] > nums[j])
                {
                    if (len[i] == len[j] + 1)
                        count[i] += count[j];
                    else if (len[i] < len[j] + 1)
                    {
                        len[i] = len[j] + 1;
                        count[i] = count[j];
                    }
                }
            }
            if (retlen == len[i])
                retcount += count[i];
            else if (retlen < len[i])
                retlen = len[i], retcount = count[i];
        }
        return retcount;
    }
};